package com.zxwang.gulimall.product.service.impl;

import com.zxwang.gulimall.product.entity.SpuInfoDescEntity;
import com.zxwang.gulimall.product.vo.SpuSaveVo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zxwang.common.utils.PageUtils;
import com.zxwang.common.utils.Query;

import com.zxwang.gulimall.product.dao.SpuInfoDao;
import com.zxwang.gulimall.product.entity.SpuInfoEntity;
import com.zxwang.gulimall.product.service.SpuInfoService;


@Service("spuInfoService")
public class SpuInfoServiceImpl extends ServiceImpl<SpuInfoDao, SpuInfoEntity> implements SpuInfoService {

    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        IPage<SpuInfoEntity> page = this.page(
                new Query<SpuInfoEntity>().getPage(params),
                new QueryWrapper<SpuInfoEntity>()
        );

        return new PageUtils(page);
    }

    @Override
    public void saveSpuInfo(SpuSaveVo vo) {
        // 1、保存 Spu 基本信息 pms_spu_info
        SpuInfoEntity infoEntity = new SpuInfoEntity();
        BeanUtils.copyProperties(vo,infoEntity);
        infoEntity.setCreateTime(new Date());
        infoEntity.setUpdateTime(new Date());
        this.saveBaseSpuInfo(infoEntity);

        // 2、保存 Spu 的描述图片 pms_spu_info_desc
        List<String> decript = vo.getDecript();
        SpuInfoDescEntity descEntity = new SpuInfoDescEntity();
        descEntity.setSpuId(infoEntity.getId());

        // 3、保存spu的图片集 pms_spu_images

        // 4、保存 spu 的规格参数： pms_sku_sale_attr_value

        // 5、保存 spu 的积分信息：gulimall_sms->sms_spu_bounds

        // 5、保存当前 spu 对应的所有 sku 信息
        // 5.1） SKU 的基本信息 pms_sku_info
        // 5.2） SPU 的图片信息 pms_sku_images
        // 5.3） sku 的销售属性信息：pms_sku_sale_attr_value
        // 5.4） sku 的优惠、满减等信息: gulimall_pms -> sms_sku_ladder\sms_sku_full_reduction\sms_member_price
    }

    @Override
    public void saveBaseSpuInfo(SpuInfoEntity infoEntity) {
        this.baseMapper.insert(infoEntity);
    }

}